﻿using PersistenceLayer.DAL;
using PersistenceLayer.Model;
using SupportLayer.Constantes;
using SupportLayer.Constantes.OUTROS;
using SupportLayer.Enums;
using SupportLayer.Objetos.Produto;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Util.ExtensionMethods;

namespace ByBikeShop.Site.Pages
{
	public partial class Home : BasePage
	{
		Administracao.UCs.Mensagem.mensagens ucMensagem;
		protected void Page_Load(object sender, EventArgs e)
		{
			try
			{
				base.PageLoad();
			}
			catch (Exception ex)
			{
				ucMensagem = (Administracao.UCs.Mensagem.mensagens)LoadControl(ResolveUrl("/Administracao/UCs/Mensagem/mensagens.ascx"));
				ucMensagem.TipoMensagem = TiposMensagens.Erro;

				if (ex.Message.Contains("shadow copy"))
					Response.Redirect(Request.RawUrl);

				else if (ex.Message.Contains("inner exception"))
					if (ex.InnerException.Message.Contains("inner exception"))
						ucMensagem.Mensagem = ex.InnerException.InnerException.Message;
					else
						ucMensagem.Mensagem = ex.InnerException.Message;
				else
					ucMensagem.Mensagem = ex.Message;

				placeMensagem.Controls.Add(ucMensagem);
			}
		}
		public override void CarregaDados()
		{
			CarregaBanner();
			CarregaDestaques();
		}
		private void CarregaBanner()
		{
			try
			{
				rptBanner.DataSource = new BannerDAL().Listar();
				rptBanner.DataBind();
			}
			catch (Exception ex)
			{
				ucMensagem = (Administracao.UCs.Mensagem.mensagens)LoadControl(ResolveUrl("/Administracao/UCs/Mensagem/mensagens.ascx"));
				ucMensagem.TipoMensagem = TiposMensagens.Erro;

				if (ex.Message.Contains("shadow copy"))
					Response.Redirect(Request.RawUrl);

				else if (ex.Message.Contains("inner exception"))
					if (ex.InnerException.Message.Contains("inner exception"))
						ucMensagem.Mensagem = ex.InnerException.InnerException.Message;
					else
						ucMensagem.Mensagem = ex.InnerException.Message;
				else
					ucMensagem.Mensagem = ex.Message;

				placeMensagem.Controls.Add(ucMensagem);
			}
		}
		private void CarregaDestaques()
		{
			try
			{
				DataTable dtDestaques = new DataTable();
				dtDestaques.Columns.Add(SupportLayer.Constantes.PRODUTO.PRODUTO.ID);
				dtDestaques.Columns.Add(SupportLayer.Constantes.PRODUTO.PRODUTO.FOTO);
				dtDestaques.Columns.Add(SupportLayer.Constantes.PRODUTO.PROMOCAO.ID);
				dtDestaques.Columns.Add(SupportLayer.Constantes.PRODUTO.PRODUTO.MODELO);
				dtDestaques.Columns.Add(SupportLayer.Constantes.PRODUTO.PRODUTO.PRECO);

				foreach (Produto_Destaque pd in new Produto_DestaqueDAL().Listar())
				{
					if(pd.Produto.Produto_Especificacao.Count == 0)
						continue;

					//string url = "/" + Destaque.Produto.Marca.Descricao.Trim().Replace(' ', '_') + "/" + Destaque.Produto.Modelo.Trim().Replace(' ', '_');
					//base.AddURLMap("~" + url, "/Site/Pages/VerProduto.aspx?" + OUTROS.PRODUTO_ID + "=" + Destaque.Produto.ID);


					string ur = "/Site/Pages/VerProduto.aspx?" + OUTROS.PRODUTO_ID + "=" + Util.Criptografia.Encriptar(SupportLayer.Constantes.CRIPTO.CHAVE, SupportLayer.Constantes.CRIPTO.VETOR, pd.Produto.ID.ToString());

					dtDestaques.Rows.Add(ur,
						ResolveUrl("/Imagens" + pd.Produto.Foto_Principal),
						(pd.Produto == null ? "style=\"opacity: 0;\"" : "style=\"opacity: 0;\""),
						pd.Produto.Produto_Marca.Descricao + " " + pd.Produto.Modelo,
						"R$ " + pd.Produto.Preco.ToString("0.00").Replace('.', ','));
				}

				rptProdutosDestaque.DataSource = dtDestaques;
				rptProdutosDestaque.DataBind();
			}
			catch (Exception ex)
			{
				ucMensagem = (Administracao.UCs.Mensagem.mensagens)LoadControl(ResolveUrl("/Administracao/UCs/Mensagem/mensagens.ascx"));
				ucMensagem.TipoMensagem = TiposMensagens.Erro;

				if (ex.Message.Contains("shadow copy"))
					Response.Redirect(Request.RawUrl);

				else if (ex.Message.Contains("inner exception"))
					if (ex.InnerException.Message.Contains("inner exception"))
						ucMensagem.Mensagem = ex.InnerException.InnerException.Message;
					else
						ucMensagem.Mensagem = ex.InnerException.Message;
				else
					ucMensagem.Mensagem = ex.Message;

				placeMensagem.Controls.Add(ucMensagem);
			}
		}
	}
}